
/*
 * Hlpay-Plus aggregate payment system. Copyright
 * (c) 2022-2023 Hlpay Team Copyright has the right of final interpretation.
 */
package com.hlkj.pay.service.admin;

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.admin.RoleDto;
import com.hlkj.pay.dto.admin.RoleQueryDto;
import com.hlkj.pay.infrastructure.model.admin.PermissionDO;
import com.hlkj.pay.infrastructure.model.admin.RoleDO;
import com.hlkj.pay.infrastructure.model.admin.RolePermissionMappingDO;

import java.util.List;

/**
 * @author HlpayTeam
 * @date 2024/09/03 14:17
 */
public interface IRoleService {

    
    /**
     * 分页查询角色
     * @param roleQueryDto 入参
     * @return PageCommonResult<RoleListVO>
     */
    PageResult<RoleDO> queryRolePage(RoleQueryDto roleQueryDto);
    /**
     * 查看角色详情
     * @param roleCode 入参
     * @return RoleDetailResp
     */
    RoleDto queryRoleDetail(String roleCode);
  
    
    /**
     * 新增角色
     * @param roleDO 入参
     * @return CommonResult<Void>
     */
    String addRole(RoleDO roleDO);
    
    /**
     * 修改角色
     * @param roleDO 入参
     * @return CommonResult<Void>
     */
    void updateRole(RoleDO roleDO);
    /**
     * delRole
     * @param roleCode
     */
    void delRole(String roleCode);
    /**
     * 角色分配权限
     * @param roleCode
     * @param rolePermissions
     */
    void updateRolePermission(String roleCode,
            List<PermissionDO> rolePermissionsAfter);
    
    /**
     * 查询角色
     * @param roleQueryDto
     * @return
     */
    List<RoleDO> queryRoleList(RoleQueryDto roleQueryDto);
    /**
     * 查看角色详情
     * @param roleCode 入参
     * @return RoleDetailResp
     */
    RoleDto queryRoleDto(String roleCode);
    /**
     * 查看角色详情
     * @param roleName 入参
     * @return RoleDetailResp
     */
    RoleDO queryRoleByName(String roleName);
    /**
     * queryPermissionCodeByRoleCode
     * @param roleCodes
     * @return
     */
    List<RolePermissionMappingDO> queryPermissionCodeByRoleCode(List<String> roleCodes);
    /**
     * queryPermissionCodeByRoleCode
     * @param permissionCode
     * @return
     */
    List<RolePermissionMappingDO> queryPermissionCodeByPermissionCode(String permissionCode);
}
